package relation

import (
	"fmt"
	"gorm.io/gorm"
)

type TmpUser struct {
	gorm.Model
	Name string `gorm:"index"`
	//默认情况下，拥有者实体会将 has one 对应模型的主键保存为外键，您也可以修改它，用另一个字段来保存，例如下个这个使用 Name 来保存的例子。
	//
	//您可以使用标签 references 来更改它，例如：
	CreditCard TmpCreditCard `gorm:"foreignkey:UserName;references:name"`
}

type TmpCreditCard struct {
	gorm.Model
	Number   string
	UserName string
}

func TestHasOne(db *gorm.DB) {
	err := db.AutoMigrate(&TmpUser{})
	if err != nil {
		return
	}
	user := TmpUser{
		Name: "tom smith",
		CreditCard: TmpCreditCard{
			Number:   "202104261525350023",
			UserName: "tom smith",
		},
	}
	db.Create(&user)
	db.Save(&user)
	var u1 TmpUser
	db.Table("tmp_users").First(&u1)
	fmt.Printf("user info: %#v \n", u1)
}
